Firewalls are commonly used by network enterprises to protect their Intranet from outside. Typically, all network traffic is blocked except for some intended ports to allow a certain protocol. Users can use tunneling to circumvent a firewall by using a protocol that the firewall would normally block, but “wrapped” inside a protocol that the firewall does not block, such as HTTP. If the firewall policy does not specifically exclude this kind of “wrapping”, this trick can function to get around the intended firewall policy. Remote Method Invocation (RMI) enables the programmer to create distributed technology, in which the methods of remote objects can be invoked from other virtual machines on different hosts. The RMI transport layer opens dynamic socket connections between the client and the server to facilitate the communication. The Java Remote Method Protocol (JRMP) traffic is typically blocked by most firewall implementations. A solution is provided by the RMI transport layer itself. To get across firewalls, RMI makes use of HTTP tunneling by encapsulating the RMI calls within an HTTP request. The RMI client, the server, or both may operate from behind a firewall. Connections in HTTP only last for one transaction, for example, a method call, or a corresponding response if tunneling is used. This means that in case of multiple calls, we are creating and destroying socket connections repeatedly. This need not happen in JRMP, where socket connections can be used for multiple, successive transactions.